package co.com.travelsoft.ati.entities.ejb;

import java.util.List;

import javax.ejb.Remote;

import co.com.travelsoft.ati.dto.CiudadDto;
import co.com.travelsoft.ati.dto.PaisDto;
import co.com.travelsoft.ati.entities.Ciudades;
import co.com.travelsoft.ati.entities.EventoDto;
import co.com.travelsoft.ati.entities.Paises;
import co.com.travelsoft.ati.entities.TipoEventoDto;
import co.com.travelsoft.ati.exception.TravelSoftException;

@Remote
public interface EventoEJBRemote {

	/**
	 * Permite crear un evento.
	 * @param eventos 
	 * @exception throws TravelSoftException 
	 */
	public abstract void crearEventoDto(EventoDto EventoDto) throws TravelSoftException;

	/**
	 * Permite buscar un evento por su identificacion.
	 * @param eventos
	 * @return EventoDto : un objeto evento
	 */
	public abstract EventoDto buscarEventoDtoPorId(EventoDto EventoDto);

	/**
	 * Permite listar todos los eventos existentes.
	 * @return List<EventoDto> : una lista de eventos
	 */	
	public abstract List<EventoDto> listarEventoDto();

	/**
	 * Permite actualizar la informacion de un evento.
	 * @param eventos
	 * @exception throws TravelSoftException 
	 */	
	public abstract void actualizarEventoDto(EventoDto EventoDto) throws TravelSoftException;

	/**
	 * Permite borrar un evento.
	 * @param eventos
	 * @exception throws TravelSoftException 
	 */	
	public abstract void borrarEventoDto(EventoDto EventoDto) throws TravelSoftException;
	
	/**
	 * Permite buscar un pais por su identificacion.
	 * @param paises
	 * @return Ciudades : un objeto paises
	 */
	public abstract PaisDto buscarPaisPorId(PaisDto paises);

	/**
	 * Permite listar todos los paises existentes.
	 * @return List<PaisDto> : una lista de paises
	 */	
	public abstract List<PaisDto> listarPaises();

	
	public abstract List<CiudadDto> buscarPorPaisId(Long paisId);
	
	/**
	 * Permite buscar una ciudad por su identificacion.
	 * @param ciudades
	 * @return Ciudades : un objeto ciudades
	 */
	public abstract CiudadDto buscarCiudadesPorId(CiudadDto ciudades);

	/**
	 * Permite listar todas las ciudades existentes.
	 * @return List<Ciudades> : una lista de ciudades
	 */	
	public abstract List<CiudadDto> listarCiudades();

	/**
	 * Permite buscar un Tipo Evento por su identificacion.
	 * @param Tiposevento
	 * @return Tiposevento : un objeto Tipos de Evento
	 */
	public abstract TipoEventoDto buscarTiposEventoPorId(TipoEventoDto Tiposevento);

	/**
	 * Permite listar todos los tipos de evento existentes.
	 * @return List<Tiposevento> : una lista de tiposEvento
	 */	
	public abstract List<TipoEventoDto> listarTiposEvento();	
	
}
